package com.tjtt.common.gps;

public class CoordTranf {
	function fn = new function();//定义对象

    public xyh BL2XY(BLH mBL,double L0,Four_Par m4)
    {

        Ellipsoid_Parameter ep=new Ellipsoid_Parameter();//定义椭球参数
        ep.a = 6378245; ep.aa = 298.3;//北京54椭球

        //01   由BLH转换到xyh
        Class_gs zs = new Class_gs();
        zs.get_ab(ep.a,ep.aa);
        zs.get_qssj1(mBL.B, mBL.L, L0);
        zs.jscs1();
        zs.jsCi();
        zs.js_gszb();


        xyh _old1=new xyh();//投影得到的高斯平面坐标
        _old1.x=zs.x;
        _old1.y=zs.y;


        //02   进行4参数转换
        xyh _new1 = new xyh();//投影得到的高斯平面坐标
        _new1 = fn._2CoordTran_Cal_By_4s(_old1, m4);

        return _new1;
    }



    public BLH XY2BL(xyh mxy, double L0, Four_Par m4)
    {

        Ellipsoid_Parameter ep = new Ellipsoid_Parameter();//定义椭球参数
        ep.a = 6378245; ep.aa = 298.3;//北京54椭球

        //01   进行4参数转换  特别说明 此处的方法和前面的不一样，因为根据之前的参数进行求反操作了！！！！
        xyh _new1 = fn._2CoordTran_Cal_By_4s_fs(mxy, m4);

        //02  由xy转换到BL
        Class_gs fs = new Class_gs();
        fs.get_ab(ep.a, ep.aa);

        fs.get_datafs(_new1.x, _new1.y, L0);
        fs.js_cs2();
        fs.jsbf();
        fs.js_cs2();
        fs.fsbl();


        BLH _newblh = new BLH();
        _newblh.B = fs.B;
        _newblh.L = fs.L;
        return _newblh;
    }
}
